package com.example.Redis自定义封装方法;

import com.alibaba.fastjson.JSON;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

/**
 * 基于FastJSON库
 * <dependency>
 *      <groupId>com.alibaba</groupId>
 *      <artifactId>fastjson</artifactId>
 *      <version>1.2.62</version>
 * </dependency>
 */
@Component
public class RedisM {

    private static StringRedisTemplate stringRedisTemplate;

    @Autowired
    public void setStringRedisTemplate(StringRedisTemplate stringRedisTemplate) {
        RedisM.stringRedisTemplate = stringRedisTemplate;
    }

    /**
     * 将java对象转化为JSON,以字符串的形式,存入Redis的set集合中
     * @param key 键
     * @param entity 值
     * @param <T> 任意类
     */
    public static <T> void JavaInRedis(String key,T entity) {
        // 将实体对象转换为JSON字符串
        String json = JSON.toJSONString(entity);
        // 存储JSON字符串到Redis中
        stringRedisTemplate.opsForSet().add(key, json);
    }

    /**
     * JSON字符串解析为Java对象
     * @param jsonString JSON字符串
     * @param object Java对象类
     * @param <T> 任意类
     * @return
     */
    public static <T> T RedisInJava(String jsonString,Class<T> object) {
        // 将JSON字符串解析为Java对象
        T parsedObject = JSON.parseObject(jsonString, object);
        return parsedObject;
    }
}
